import axios from "axios";
import { ElMessage } from "element-plus";

// 创建axios实例
const instance = axios.create({
  // 接口的url前缀
  baseURL: "http://www.pudge.wang:3080/api",
  // 超时时间
  timeout: 1000,
  // 请求头设置
  headers: { "Content-Type": "application/json" },
  // params: {
  //   token: localStorage.getItem("token"),
  // },
});

// 添加请求拦截器
// 1. 添加统一的参数，比如token
// 2. 为特定的接口添加特定的请求头
instance.interceptors.request.use(
  function (config) {
    // 每一次请求发送之前会来执行
    // console.log(config);
    // if (config.method === "get") {
    //   config.params.token = localStorage.getItem("token");
    // } else {
    //   config.data.token = localStorage.getItem("token");
    // }

    // if (config.url === "/upload") {
    // 修改请求头了
    // }

    // 在发送请求之前做些什么
    return config;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 添加响应拦截器
// 1. 直接返回response.data
// 2. 统一处理错误码
instance.interceptors.response.use(
  function (response) {
    // 对响应数据做点什么
    // 在数据请求到之后执行
    console.log(response);
    if (response.status === 200) {
      return response.data;
    } else if (response.status === 500) {
      ElMessage.error("服务器错误");
    }
  },
  function (error) {
    // 对响应错误做点什么
    return Promise.reject(error);
  }
);

const http = {
  get(url: string, params?: object) {
    return instance
      .get(url, {
        params: params,
      })
      .then((res) => {
        return res;
      })
      .catch((err) => {
        ElMessage.error(err.message);
      });
  },
  post(url: string, data?: object) {
    return instance
      .post("http://www.pudge.wang:3080/api" + url, data)
      .then((res) => {
        return res;
      })
      .catch((err) => {
        ElMessage.error(err.message);
      });
  },
};

export default http;
